home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MACD 5
/
MACD 5.bin
/
amigowiec
/
pccontraaamiga.txt
< prev
next >
Wrap
Text File
|
1997-10-29
|
30KB
|
463 lines
IBM PC kontra AMIGA
Powszechnie wiadomo, ûe spory uûytkowników róûnych rodzajów komputerów
byîy, sâ i bëdâ istniaîy. Jednak twierdzenia, bâdú porównania sâ czësto
formuîowane pod wpîywem emocji i nie zawsze sâ zgodne z prawdâ (Patrz
niektóre czasopisma IBMowskie, które czasami napiszâ coô o Amidze).
Wynika to w duûej mierze z nieznajomoôci tematu, a co za tym idzie z
wyciâgania wniosków na podstawie mitów. Poniûszy artykuî jest próbâ
rzeczowego i uporzâdkowanego porównania dwóch ôwiatów IBMa i AMIGI.
(przyp. red.)
Zrealizowanie w/w zamierzenia nie jest moûliwe bez uregulowania pewnych
zakresów tematycznych, tak wiëc pozwoliîem sobie wyodrëbniê nastëpujâce
kryteria porównania: - procesor Motorola vs. Intel; - hardware Amigi vs.
IBMa; - software AmigaOS vs. MS-DOS & Windows; - programy podzielone na
odpowiednie grupy tematyczne.
IBM PC. To konstrukcja, która powstaîa w chwili, gdy Sinclair zbudowaî
swój ZX 81. Byî to pierwszy komputer wykorzystujâcy zarówno I8068, jak i w
ogóle 16-bitowâ technikë. Ze wzglëdów ekonomicznych i technologicznych
wykorzystano 8/16 bitowâ wersjë Intela - 8088. Pierwsze egzemplarze
posiadaîy prawie 16 KB pamiëci, miaîy dostëp do "pamiëci taômowej", czyli
magnetofonu, a wyôwietlana grafika byîa ukîadana z czarno - biaîych znaków
semigraficznych. Mimo zalet niewiele wiëkszych od tych oferowanych przez
ZXy, czy inne ówczesne komputery osobiste, komputer ten przyjâî sië na
rynku jako swoisty standard. Wszystko z nim zwiâzane byîo (i jest)
przereklamowane, podejôcie uformowane przez mity i bajki wyssane z palca na
niewiarygodnâ skalë (biedny palec). Obie ówczesne konstrukcje - IBM PC i
ZX 81, oprócz czasu wydania, majâ bardzo wiele cech wspólnych, poczâwszy od
budowy procesora na architekturze komputera skoïczywszy.
Amiga. Jej oszaîamiajâca kariera zaczëîa sië w roku 1985, kiedy to
Commodore pokazaî nowy komputer - A1000. Posiadaî on bardzo szybki
32/16-bitowy procesor MC 68000 (w tamtych czasach 68000 i jego kuzyn MC
68010 byîy stosowane jedynie w najszybszych stacjach graficznych i
roboczych: Sun, Apollo, itp.0, oszaîamiajâcâ grafikë aû w 4096 kolorach,
pierwszy produkowany seryjnie ukîad generujâcy dúwiëk stereo,
wielozadaniowy system operacyjny, itd. W ciâgu kolejnych lat Amiga byîa
jedynym komputerem wieloprocesorowym, spoôród komputerów 16 i 32-bitowych
jako jedyna posiada system sprite'ów. Amiga znacznie przerastaîa
jakikolwiek dostëpne systemy komputerowe, jej moûliwoôci byîy porównywalne
jedynie z lepszymi stacjami roboczymi. A jednak nie tylko nie staîa sië
popularna - zostaîa zepchniëta do kategorii superkomputerów domowych. Brak
marketingu i jakiegokolwiek poparcia ze strony Commodore tylko pogarszaî
sytuacjë, hasîo "multimedia" byîo utoûsamiane z grami przez osoby bardziej
"ograniczone", natomiast osoby "ôwiatîe" wciâû czekaîy na jego nadejôcie
zupeînie ignorujâc istnienie multimedialnego komputera Amiga.
Po tym drobnym wstëpie rozpoczynam test porównawczy dwóch rodzin
komputerów: doskonale nam znanych Amig firmy Commodore oraz IBM PC i
kompatybilnych produkowanych przez wiele firm. W ciâgu cyklu porównamy
kolejno: - procesory komputerów, rodziny Intel 80x86 oraz Motorola MC
680x0; - architekturë obu komputerów; - system operacyjny; - oprogramowanie
niezaleûnych producentów.
W przeciwieïstwie do doôê popularnych testów typu "komputer X jest
lepszy, bo jest lepszy" kaûdâ opinië i uwagë postaram sië dokîadnie
wyjaôniê i poprzeê. W kaûdej czëôci testu podam gîównie fakty zwiâzane z
tematem, bez nadmiernego interpretowania. Dzisiaj porównanie procesorów, a
w kolejnych wydaniach nastëpne punkty programu.
Procesory Intel i Motorola
Obie firmy sâ najwaûniejszymi potentatami rynków komputerowych.
Produkujâ one nie tylko procesory, lecz caîâ gamë ukîadów logicznych i
analogowych. Firma Motorola przoduje w opracowaniach sieciowych, urzâdzeï
radiowych i komputerów. Intel produkuje wysokiej klasy modemy oraz
popularne ukîady elektroniczne. MC 680x0
Firma Motorola ma bardzo ciekawâ strategië rozwoju procesorów. Co kilka
lat w firmie tej powstaje nowa rodzina procesorów, niezaleûna od
pozostaîych opracowaï, charakteryzujâca sië praktycznie 100%
kompatybilnoôciâ wszystkich ukîadów rodziny. Pomiëdzy rodzinami
przenoszone sâ jedynie gîówne opracowania technologiczne, szczegóîy
konstrukcyjne jak zestaw instrukcji i rejestrów, formaty danych i interface
z urzâdzeniami zewnëtrznymi nie sâ dziedziczone z rodziny starszej na
nowszâ. Szczególnie znane sâ rodziny: - MC 68xxx - wykorzystywane w
Amigach, Macach, Atari ST / TT / Falcon, Sun, itd.; - MC 88xxx - rodzina
RISC; - DSP 56xxx - rodzina procesorów sygnaîów cyfrowych, wykorzystywanych
np. w komputerze Atari Falcon; - PowerPC - najnowsza rodzina procesorów,
majâca poîâczyê moûliwoôci porównywanych procesorów MC 68xxx oraz Intel
80x86.
Szczególnie wysokâ pozycjë ma rodzina MC 68xxx wykorzystywana w naszych
poczciwych Amigach, îâczy ona gîównie zalety pozostaîych rodzin. Najnowsze
procesory tej rodziny posiadajâ symetrycznâ architekturë superskalarnâ
zapoûyczonâ od MC 88xxx, bardzo szerokâ listë instrukcji charakterystycznâ
dla procesorów CISC (ang. Complex Instruction Set Computer - zîoûona lista
rozkazów w przeciwieïstwie do RISCów) oraz rozwiniëty system rejestrów,
charakterystyczny raczej dla nowoczesnych superminikomputerów niû innych
CISCów.
Rodzina ta zaczëîa sië od procesora MC 68000, który byî konstrukcjâ
zarówno 16, jak i 32-bitowâ. Programista uûywaî wszystkich cech komputerów
32-bitowych, natomiast projektant systemów komputerowych - 16-bitowych
ukîadów zewnëtrznych. Zestaw rejestrów z tego procesora jest identyczny
dla jego nastëpców, róûniâ sië one jedynie rozszerzonym zestawem instrukcji
i rejestrami systemowymi.
Rejestry
W podstawowym jëzyku kaûdego - asemblerze uûywane sâ specjalne
"pojemniki" na dane. Ich iloôê oraz îatwoôê uûycia w decydujâcym stopniu
tworzâ jakoôê i prëdkoôê komputera. Wszystkie rejestry "motorolki" majâ
dîugoôê 32 bitów i sâ podzielone na rejestry danych i adresowych. W
przeciwieïstwie do procesora Intel, rejestry te majâ jedynie róûne numery i
nie majâ specjalnych cech w obrëbie rejestrów jednej grupy (danych lub
adresowych). Oznacza to, ûe np. operacjë dodawania moûemy wykonaê z
pomocâ dowolnych rejestrów, z dowolnâ precyzjâ: - bajtu (8 bitów); - sîowa
(16 bitów); - dîugiego sîowa (32 bity).
Kaûdy rejestr moûe zawieraê dane podczas dowolnej operacji, dowolny z
nich moûe uczestniczyê w tworzeniu skomplikowanych trybów adresowania.
Istnieje bardzo szybka instrukcja zapamiëtujâca wybrany blok rejestrów na
stosie.
Instrukcje
Kaûdy procesor potrafi wykonaê zestaw czynnoôci okreôlanych jako
instrukcje. Instrukcja jest odpowiednio zbudowanâ liczbâ, rozpoznawanâ
przez procesor. Procesory MC 68xxx dysponujâ kilkoma tysiâcami instrukcji
tworzonymi z ponad stu podstawowych. Tak "zupeînie" podstawowych
instrukcji jest nieco ponad 40, dodajâc róûne tryby pracy, tryby
adresowania i rozmiary otrzymujemy instrukcje pochodne. Kaûda instrukcja
pracuje z wiëkszoôciâ dostëpnych trybów adresowania, czyli sposobami
otrzymania danych "substratów" tworzâcych podczas operacji danâ/dane
"produkty". Zupeînie oczywistâ cechâ jest uûywanie dowolnych rejestrów do
przechowywania danych, jak i konstruowania trybów adresowania.
Zestaw instrukcji procesora MC 68000 jest kodowany na minimum 16 bitach,
czyli w pamiëci 1 MB mieôci sië nieco ponad póî miliona instrukcji.
Praktycznie kaûda instrukcja operuje na danych 8, 16 i 32-bitowych,
pojedyncze pracujâ na danych ustalonej dîugoôci. Formaty instrukcji
zostaîy zaplanowane ze spokojnym namysîem, w przeciwieïstwie do Intela
zapewniajâ praktycznie dowolnie rozszerzenia i nowe tryby adresowania.
Procesor MC 68000 zawiera bardzo wiele instrukcji nie majâcych
jakiegokolwiek odpowiednika Intelu. Instrukcji warunkowych jest
kilkadziesiât - Intel ma ich kilkanaôcie. Motorolka posiada unikalne
instrukcje operujâce na pojedynczych bitach, pozwalajâc na testowanie,
negacjë, ustawianie i gaszenie dowolnie wybranego bitu, bez zmiany
pozostaîych. Mechanizm ten jest jeszcze bardziej uûyteczny po wprowadzeniu
pól bitowych w procesorze MC 68020. na tak "zaawansowane" operacje
uûytkownicy blaszaków ze "Szwindel inside" musieli czekaê aû na I 80386 (8
lat), w praktyce bez moûliwoôci ich wykorzystania (z uwagi na znikomâ
kompatybilnoôê tego procesora ze starszymi procesorami).
Tryb adresowania
Podczas dowolnych obliczeï operujemy na danych ustalonego typu. Dla
procesora MC 680x0 praktycznie wszystkie instrukcje operujâ na tych samych
danych: 8,16 i 32 bity. Aby w trakcie obliczeï uûyê liczby, trzeba jâ
najpierw "wczytaê" do procesora uûywajâc odpowiedniego trybu adresowania.
Jest to sposób, w jaki wskaûemy liczbë, np.: ADDI.L#A,D0 ;Dodaj liczbë "A"
do liczby w rejestrze D0.
;Rejestr D0 zawiera
;liczbë o 32-bitowej dîugoôci, jego
;zawartoôê jest zmieniana na sumë liczby
;"A" i poprzedniej zawartoôci rejestru. MOVE.L D3,(A7) ;Liczba z
rejestru D3 jest przesîana do
;komórki o adresie zawartym w rejestrze A7.
Instrukcje Motoroli majâ doôê specyficznâ cechë - kaûda instrukcja ma
kilka odmian swojej podstawowej formy, zaleûnej od dostëpnych jej trybów
adresowania, np.: ADDx.s <a>,<b> ADD - dodawanie podstawowe - dostëpne
prawie wszystkie tryby adresowania; ADDA - dodawanie z wynikiem
pozostawionym w rejestrze adresowym; ADDQ - dodawanie z ograniczonym
argumentem <a>; ADDI - dodawanie z danâ natychmiastowâ jako argument <a>.
Jeszcze raz przypominam, rozmiar instrukcji "s" (.B, .W, .L) jest dowolny
dla wszystkich trybów adresowania. Grupa instrukcji wyznaczonych literâ
"x", róûni sië przewaûnie pierwszym argumentem - instrukcja podstawowa
(ADD) operuje na uniwersalnych danych <a> i <b>, jednak ogranicza
stosowanie niektórych trybów adresowania <b> przy specyficznych trybach
<a>. Instrukcja zmienia niektóre wîaôciwoôci, stâd wiëkszoôê instrukcji ma
wîaônie taki format.
Tryby adresowania stosowane w procesorze MC 68000 sâ wîaôciwe raczej dla
minikomputerów niû procesorów jednoukîadowych. Oprócz zîoûonych trybów
wykorzystujâcych wielokrotne rejestry indeksowe, majâ unikalny tryb:
Instrukcja <coô>, (An)+ Instrukcja <coô>,-(An)
Przy korzystaniu z tego trybu, dana jest wskazywana przez dowolny rejestr
adresowy An, a zawartoôê tego rejestru jest zwiëkszana tak, by wskazywaê
nastëpnâ danâ. Druga instrukcja najpierw ustawia An na kolejnej danej,
dopiero potem jest ona adresowana. Zastosowanie tych trybów ma szereg
zalet nad procesorem Intel: - w bardzo prosty sposób moûna stworzyê ciâg
instrukcji obrabiajâcych dane dowolnej precyzji (np. 1024-bitowe); -
wiëksze struktury danych jak np. tablice czy îaïcuchy sâ bardzo efektywnie
wykorzystywane; - wykorzystanie dowolnej instrukcji i trybów -(An), (An)+
odpowiada dwóm instrukcjom Intela potrzebnym do obróbki danych na stosie.
Taka implementacja mechanizmu stosów daje nam oprócz prëdkoôci iloôê
stosów równâ iloôci rejestrów adresowych - 9 dla MC 68000 i 10 dla MC
68020. Dla porównania: Intel 8086 z XT ma tylko jeden stos, nowsze
Inteliny sâ równie "zaawansowane" - aû dwa stosy!!!
Pamiëê a procesor
Do ogromnej przewagi Motoroli nad Intelem przyczyniîy sië dwa genialne
pomysîy. Wprowadzenie 32-bitowych rejestrów i przestrzeï adresowana
generowana bezpoôrednio na podstawie 32 bitów. W praktyce jedna cecha
automatycznie wysunëîa drugâ.
Kaûdy procesor rodziny MC 68000 generuje peîny 32-bitowy adres
bezpoôrednio generowany w naszym programie i kaûdej jego instrukcji,
odwzorowywany na liniowâ przestrzeï 4 GB. Nie ma idiotycznych podziaîów na
segmenty z Intela, w dowolnym momencie mamy dostëp do dowolnej komórki. W
generowaniu adresów bardzo pomaga zestaw uniwersalnych (w obrëbie grupy)
rejestrów adresowych A0 - A7, które mogâ bezpoôrednio wskazywaê komórkë,
jak i braê udziaî w tworzeniu odpowiedniego trybu adresowania.
Podziaî rejestrów na dwie grupy ma jeszcze jednâ zaletë - operacje na
danych mogâ byê w peîni przeplatane z operacjami przygotowujâcymi
odpowiedni adres. Jest to zapewnione przez odpowiednie traktowanie
znaczników. Niestety sâ równieû drobne wady - tworzenie 32-bitowego adresu
wydîuûa przestrzeï pamiëci przydzielanâ na instrukcjë, a rejestry adresowe
nie mogâ byê dzielone na czëôci 8-bitowe. Cóû, nikt i nic nie jest
doskonaîe.
Operowanie na danych
O ogromnej elastycznoôci Motoroli jesteô juû przekonany. Dodam jeszcze
sîowo o danych wielokrotnej precyzji. Mimo iû zakres 32 bitów jest w wielu
wypadkach wystarczajâcy, podczas wielu obliczeï korzysta sië z liczb o
znacznie wyûszej precyzji, np. 128 bitów. Jeszcze czëôciej korzysta sië z
liczb rzeczywistych, realizowanych gîównie w formacie zmiennoprzecinkowym
80 bitów. Staîoprzecinkowe operacje pozwalajâ na bezpoôrednie korzystanie
z trybów predekrement i postinkrement. Pozwalajâ one na tworzenie operacji
(np. makroinstrukcji) operujâcych na danych dowolnej precyzji.
W MC 68000 nie byîo 64-bitowych operacji dzielenia i mnoûenia, jest to
jedyna cecha odtrâcajâca ten procesor od w peîni 32-bitowych maszynek. Na
szczëôcie nowszy procesor MC 68020 posiada operacje 64-bitowe mnoûenia i
dzielenia, ôciôle - dzielona jest 64-bitowa liczba przez 32-bitowe dajâc
wynik 64-bitowy. Dodane sâ równieû operacje uproszczone, przydatne przy
szybkich obliczeniach oraz - realizacji obliczeï na danych wielokrotnej
precyzji.
Procesory te nie potrafiâ bezpoôrednio liczyê na danych
zmiennoprzecinkowych, w tym celu Motorola wprowadziîa bardzo wydajne
koprocesory: MC 68881 i jego nowszego kuzyna MC 68882. W nowszych
procesorach MC 68040/60 sâ one wbudowane we wnëtrze procesora dajâc jeszcze
wiëkszâ wydajnoôê niû para MC 68030 i MC 68882.
Koprocesory
Firma Motorola zupeînie zmieniîa dotychczasowe definicje koprocesorów.
Jest on dowolnym rozszerzeniem sprzëtowym komunikujâcych sië z procesorem
za pomocâ specjalizowanego protokoîu wymiany ûâdaï i potwierdzeï. W
przeciwieïstwie do Intela jest to protokóî programowy, co znacznie podnosi
jego funkcjonalnoôê i daje moûliwoôê podîâczenia dowolnych zasobów
sprzëtowych. Procesor rozpoznaje staîy zestaw rejestrów w kaûdym
procesorze, zostawiajâc w nich ustalone informacje potwierdzajâce gotowoôê
od wykonania ûâdania, potwierdzenie wykonania poprzedniej informacji itp.
Informacje te majâ dosyê niski poziom, zapewniajâc budowanie dowolnych
protokoîów wysokiego poziomu. Jednoczeônie komunikacja z koprocesorem jest
wykonywana przez odpowiednie wbudowane mechanizmy, co odciâûa programistë
od ukîadania takich protokoîów.
Procesory MC 68000 mogâ wspóîpracowaê z oômioma koprocesorami
jednoczeônie, przynajmniej tyle obsîuguje mikrokod odpowiedzialny za
generacjë protokoîów. Koprocesory mogâ mieê dowolne zasoby sprzëtowe
(rejestry, wewnëtrznâ pamiëê) oraz operowaê na dowolnych danych. W chwili
obecnej Motorola produkuje koprocesory matematyczne, zarzâdzania pamiëciâ i
sieciâ. Jednoczeônie istniejâ opracowania niezaleûnych producentów.
Nowsze procesory majâ wbudowane jednostki zmiennoprzecinkowe (MC 68040 i
nowsze) oraz ukîady zarzâdzania pamiëciâ MMU (MC 68030 i nowsze). Istnieje
caîa rodzina specjalizowanych kontrolerów, z wbudowanymi koprocesorami
obsîugi urzâdzeï wejôcia/wyjôcia np. sieci.
Intel 80x86
Firma Intel ma bardzo konserwatywne podejôcie do swoich wyrobów. Kaûdy
procesor jest nastëpcâ jakiegoô poprzednika, dziedziczy on jego cechy, w
tym wady. Z takiej "ciâgîoôci" produkcji doôê trudno rozróûniê rodziny
procesorów, do rodziny I80x86 moûna nawet zaliczyê ukîad Z 80 ze Spectruma,
mimo iû jego producentem jest firma Zilog.
Ukîad I8086 byî pierwszym procesorem 16-bitowym, mimo to wspóîczesne
procesory 16 i 32-bitowe znacznie odbiegajâ od jego architektury, sâ
zaledwie podobne. Uproszczony ukîad 8088 byî podstawowym elementem
pierwszego "PC" jakim byî IBM XT. W przeciwieïstwie do ukîadów Motoroli, w
rodzinie Intel "zalëgîo" sië mnóstwo niezgodnoôci i niekonsekwencji, stâd
powiedzenie "procesor X i nowsze" nie ma tak ogólnego znaczenia.
Import niezbyt wygodnych cech procesorów 8-bitowych zdecydowanie
pogorszyî funkcjonalnoôê procesorów I80x86, zablokowaî moûliwoôê îatwych
rozszerzeï i ulepszeï.
Rejestry
Ukîad Intel zawiera doôê niezgrabnie uformowany "zlepek" rejestrów
róûnego przeznaczenia. Zaledwie rejestr AX jest pseudo uniwersalny,
pozostaîe mogâ byê wykorzystywane jedynie w bardzo generalnych
instrukcjach. Wykorzystanie odpowiedniego rejestru zawsze wiâûe sië z
ograniczeniami dostëpnych trybów adresowania, sâ one równieû zaleûne od
rozmiaru danej. Kaûdy rejestr dzieli sië na dwie 8-bitowe czëôci. Jeôli
Drogi Czytelniku miaîeô stycznoôê z zacnymi komputerami ZX Spectrum, to
zauwaûysz uderzajâce podobieïstwo procesorów Z 80 i I 8086 (pod niektórymi
wzglëdami Z 80 jest nawet lepszy, np.: posiadaî dwie niezaleûne palety
rejestrów).
Oznacza to, ûe podczas pisania programu naleûy ciâgle pamiëtaê, który
rejestr moûe byê uûyty podczas obliczeï, jakie tryby adresowania budujemy
danym rejestrem itd. Bardzo czësto brakuje rejestrów do wykonania danego
zadania, stâd konieczna jest masa instrukcji pomocniczych, przekîadajâcych
rejestry np. na stos. Podczas obliczeï bardziej koncentrujemy sië
ûonglerkâ rejestrami niû faktycznym algorytmem. Majabra.
Z "ogromnej" iloôci 13 rejestrów 4 odpadajâ na zarzâdzanie bankami, gdyû
przestrzeï adresowa w przeciwieïstwie do Motoroli jest zarzâdzana bankami o
dîugoôci 64KB. Wynika to z dziedziczenia cech procesorów 8-bitowych, które
przewaûnie nie potrafiâ obsîugiwaê pamiëci wiëkszej niû 64KB w sposób
liniowy. Do bezpoôredniego wykorzystania nie nadajâ sië równieû rejestry
IP (odpowiednik PC) oraz SP, który jest wskaúnikiem stosu. W Motoroli
wskaúnik stosu byî zwykîym rejestrem adresowym, który w wyjâtkowych
sytuacjach byî traktowany odmiennie. W Intelu operacje mogâ byê
wykorzystywane tylko na jednym stosie, w komputerach XT nie ma nawet stosu
systemowego, ze wzglëdu na kompatybilnoôê nie jest on szeroko uûywany
równieû w nowszych procesorach!
W praktyce jesteômy ograniczeni do 4 rejestrów danych i dwóch adresowych,
przy czym dajâ one znacznie mniejsze moûliwoôci niû odpowiedniki Motoroli.
Instrukcje
Instrukcje Intela sâ bardzo nieuniwersalne, wiëkszoôê z nich moûe byê
uûywana jedynie w odniesieniu do jednego rejestru (AX). Bardzo czësto w
nazwie instrukcji zawarta jest informacja o rejestrach, stâd trzeba
pamiëtaê listë bezsensownych mnemoników. Rozmiar danej na jakiej operuje
instrukcja zawarty jest w nazwie rejestru, a nie instrukcji, co prowadzi do
czëstych bîëdów.
Wreszcie najwaûniejsza cecha Intela - ukîady I 8086/88/286 sâ 16-bitowe i
nie potrafiâ liczyê na danych 32-bitowych nawet w ograniczonym zakresie.
Jest to ogromna wada tego procesora, gdyû program napisany na procesor
starszy, bëdzie niewiele szybszy na procesorze nowszym. W Motoroli
procesor nowszy automatycznie korzysta z peînej 32-bitowoôci, przynajmniej
podwajajâc prëdkoôê.
Piszâc program na dowolny procesor Motoroli zawsze korzystam z liczb
32-bitowych, gdyû procesory te majâ przynajmniej (MC 68000-12) architekturë
16/32 bity. Napisanie programu 32-bitowego na Intelu spowoduje "wielkie
bum" na procesorach starszych od I 80386. Stâd prawie wszystkie programy
korzystajâ jedynie z antycznych 16 i 8 bitów znakomicie pogarszajâc
parametry nawet rzekomo wydajnych I 80486. Wiëkszoôê testów i porównaï
prëdkoôci zarówno wewnâtrz rodziny Intel, jak i z innymi rodzinami jest
bardzo przekîamana ze wzglëdu na wymagania kompatybilnoôci, stâd czëste
uûywanie najwyûej 16-bitowych operacji (przynajmniej w komputerach IBM PC).
Co ciekawsze, tendencja 16 bitów dotyczy nie tylko programów uûytkowych,
ale równieû systemów operacyjnych i jëzyków programowania. Wiëkszoôê
kompilatorów zamyka sië w 16-bitowym zakresie XT sprzed ponad dziesiëciu
lat!
Kolejny paradoks w rodzinie Intel dotyczy niezgodnoôci procesora I
8086/88 z kolejnymi procesorami. Nowsze modele muszâ przechodziê w
specjalny tryb emulacji pradziada, w którym nie mogâ korzystaê z nowych
rozszerzeï. Z kolei w trybie rozszerzonym nie moûna wykonywaê starych
programów. Oznacza to dalsze problemy z kompatybilnoôciâ oraz ograniczenia
w uûyciu nowych rozszerzeï procesorów.
Dopiero w procesorach I 80386 oraz I 80486 dodano póîôrodki polepszajâce
të sytuacjë. Wymagajâ one jednak wspóîpracy z systemami operacyjnymi,
której te jeszcze nie zapewniajâ.
Dalsze kîopoty w uûyciu instrukcji dotyczâ tzw. "rejestrów
uniwersalnych", które w praktyce sîuûâ jedynie do okreôlonych celów.
Uûycie wielu z instrukcji wymaga domyôlnego ustawienia odpowiednich
wartoôci w rejestrach nie biorâcych udziaîu w operacji, przykîadowo rejestr
CX musi zawieraê iloôê powtórzeï pëtli w instrukcjach LOOP, iloôê bajtów w
instrukcjach przesuwu itd. Instrukcje mnoûenia, dzielenia, logiczne itd.
mogâ byê wykonane jedynie z uûyciem rejestru AX.
Wreszcie "cudaczna" cecha procesora Intel dotyczy czytania danych z
pamiëci i generacji adresów. Ze wzglëdu na bagaû "doôwiadczeï" z
procesorów 8 i 4 bitowych, procesor ten czyta dane przestawiajâc fragmenty.
Dana w pamiëci zapisana jako: Bajt1 Bajt2 Bajt3 Bajt4
1 2 3 4 jest interpretowana jako $3412.
Instrukcje zawierajâce adres zawierajâ doôê ômieszny podziaî na krótkie i
dîugie tryby, przy czym krótkie przesuniëcie ma wartoôê 8-bitowâ, a dîugie
"aû" 16-to.
Tryby adresowania
Procesory MC 68000/10/12 dysponujâ 14 trybami adresowania. Sâ to
podstawowe schematy, wedle których pobiera sië odpowiedniâ danâ z pamiëci.
Ukîad Intel potrafi operowaê jedynie 8 trybami, przy czym w porównaniu z
Motorolâ dajâ one znacznie mniejsze moûliwoôci niû odpowiedniki Motoroli.
Jednâ z podstawowych cech róûniâcych Intela i Motorolë sâ róûne koncepcje
procesorów. Maîa iloôê rejestrów Intela jest dodatkowo przeciâûana
prymitywnymi instrukcjami, nie pozwalajâ one na operacje typu
pamiëê-pamiëê, wymagajâc uûycia i tak niewielu rejestrów. W ukîadach
Motoroli nie tylko zarzâdzamy bardzo uniwersalnymi rejestrami (17 rejestrów
32-bitowych w porównaniu z czterema 16-bitowymi Intela), lecz dodatkowo
korzystamy z bardzo rozbudowanych trybów adresowania najczëôciej
pozwalajâcych na umieszczenie obu argumentów w pamiëci.
Niektóre publikacje (gîównie firmy Intel) porównujâ tryby adresowania
Motoroli i Intela, nadmiernie rozbudowujâc te ostatnie. Na przykîad z
ogólnego trybu adresowania rejestrem indeksowym tworzâ "dziwolâgi" typu
"adresowanie indeksowe rejestrem X, adresowanie indeksowe rejestrem Y
itd...." Stâd czasami stwierdzajâ 23-28 trybów Intela wobec podstawowych 14
Motoroli. Gdyby identycznie "rozciâgnëli" tryby Motoroli wyszîoby im
kilkaset wariantów wobec dwudziestu kilku Intela...
Tryby adresowania ulegîy rozszerzeniom zarówno w ukîadach MC 68020 i
nowszych jak i I 80386. Jak zwykle na korzyôê tego pierwszego.
Pamiëê a procesor
Jak juû wczeôniej pokazaîem, ukîad Motorola traktuje przestrzeï adresowâ
w peîni liniowo. Dowolna komórka pamiëci jest osiâgalna w dowolnym
momencie za pomocâ bezpoôrednio podawanego 32-bitowego adresu. Ukîad
Intela posiada koszmarny system segmentów. Odziedziczenie rozwiâzaï
procesorów 8-bitowych zadecydowaîo o wykorzystaniu jedynie 64KB bloku
pamiëci, gdyû wszystkie rejestry tworzâce adres sâ jedynie 16 bitowe.
Procesor dysponuje 4 blokami po 64KB kaûdy: - segment danych DS; - segment
stosu SS; - segment programu CS; - segment dodatkowy ES.
Aby choê trochë odróûniê komputery ZX Spectrum i IBM PC firma Intel
wprowadziîa specjalne rejestry segmentowe. Sâ one w odpowiedni sposób
dodawane do adresu generowanego podczas wykonywania instrukcji, wskazujâc
upatrzonâ komórkë w 64KB segmentach. Zamiast 64KB otrzymujemy jakûe
przestronnâ przestrzeï 1MB (Motorola ma przestrzeï liniowâ 4GB).
Stâd przed dostëpem do jakichkolwiek danych musimy zîoûyê odpowiedni tryb
adresowania, uprzednio îadujâc odpowiedni rejestr segmentowy. Aû trudno
uwierzyê, ûe programy na Intela robiâ cokolwiek innego (np. realizacja
planowanego algorytmu) oprócz ciâgîego przekîadania rejestrów
"uniwersalnych" oraz korygowania rejestrów segmentowych.
W procesorach I 80286 i nowszych dodano tryb systemowy oraz zwiâzany z
nim ukîad zarzâdzania pamiëciâ. Polepsza on nieco beznadziejnâ wspóîpracë
z pamiëciâ tego procesora, chociaû takie sztuczne zîoûenie procesora
majâcego swoje úródîa w konstrukcjach 4-bitowych i koncepcji nowoczesnego
zarzâdzania pamiëciâ, bardzo skomplikowaîa jego pracë i budowë, skutecznie
utrudniajâc tworzenie systemów operacyjnych, jak i zwykîych programów z
uûyciem jëzyków niûszego poziomu.
Operowanie na danych
Procesor I 8086 operuje jedynie na bajtach i sîowach. Jego nastëpca I
80386 ulegî rozszerzeniu do 32 bitów, jednak jest to raczej sztuczne
rozwiâzanie. Do oômiu najwaûniejszych rejestrów dodano dodatkowe 32 bity,
jednoczeônie wprowadzajâc nowy typ danych. Procesory I 80386/486 mogâ
dodatkowo obsîugiwaê pojedyncze bity grupowane w pola bitowe (takâ "sztukë"
moûe wykonaê nawet praszczur MC 68000, rozszerzajâc moûliwoôci w MC 68020).
Wprawdzie moûna obsîugiwaê dane wielokrotnej precyzji, jednak trzeba
wspieraê sië ogromnâ iloôciâ instrukcji pomocniczych, które tworzâ
namiastkë zîoûonych trybów adresowania Motoroli (gîównie -(An), (An)+).
Procesor Intel ma zestaw instrukcji specjalnych, które potrafiâ operowaê na
blokach, uûywajâc zestawu rejestrów definiujâcych jego parametry. Do
wprowadzenia procesora MC 68010/12 Motorola nie potrafiîa na tyle
efektywnie obsîugiwaê dîuûszych îaïcuchów i list. Jednak nowoczesne
procesory tej rodziny (68010 i nowsze) posiadajâ pamiëê cache automatycznie
rozpoznajâcâ pëtle operujâce na blokach, przetwarzajâc dane efektywniej niû
Intel.
Koprocesory
Intel doôê szybko zauwaûyî marnâ wydajnoôê swojego procesora, stâd
opracowanie koprocesora I 8087 byîo szybsze niû koprocesora MC 68881.
Podczas opracowywania interface'u miëdzy procesorem a ukîadem I 8087, nie
chciano stworzyê uniwersalnego sposobu wymiany informacji z dowolnymi
zasobami sprzëtowymi jak w wypadku Motoroli, dâûono raczej do najprostszego
technologicznie poîâczenia. Koprocesor Intela musi byê w bezpoôrednim
sâsiedztwie procesora, gdyû korzysta ze specjalnych linii tworzâcych
protokóî z procesorem gîównym. Takie dâûenie do z pozoru najprostszego
rozwiâzania jest typowe dla firm Intel i IBM, jednak w obu przypadkach
koïczy sië ogromnymi problemami w unowoczeônianiu sprzëtu i pisaniu
programów na takie "podresowane" urzâdzenia.
W wiëkszoôci wypadków procesor musi czekaê na wykonanie operacji przez
koprocesor, zsynchronizowanie obu ukîadów jest trudnym zadaniem.
Wprowadzenie wielozadaniowego systemu operacyjnego na ten procesor wiâûe
sië zawsze z duûymi problemami, gdyû wykonywanie operacji przez koprocesor
polega raczej na wydawaniu zleceï niû obustronnych potwierdzeï.
Wreszcie procesor moûe komunikowaê sië tylko z jednym koprocesorem, bez
moûliwoôci uûycia innego ukîadu niû FPU Intel 8087/287/387. Procesor
nowszy nie moûe korzystaê ze starszego koprocesora, co utrudnia zmianë
konfiguracji (przykîadowo - w Amidze moûemy mieê koprocesor na pîycie i
îâczyê go z dowolnym procesorem doîâczonym z zewnâtrz).
Business is business
Zamiast podsumowania kilka sîów o zastosowaniu obu ukîadów. Wprowadzenie
ukîadu I 8086 nie wystarczyîo, aby zdobyê jego popularnoôê. Dopiero po
wprowadzeniu systemu operacyjnego CP/M ukîad ten zdobyî wiëkszy zbyt.
Zadecydowaîo uûywanie w komputerach niezaleûnych producentów i mit kodu
przenoszonego z platformy na platformë.
Procesor I 8086 wprowadzono z myôlâ kontynuowania linii rozpoczynajâcej
sië od 4004, jednak system opracowany na ten procesor przez firmë Intel nie
zyskaî odpowiedniego poparcia. Dopiero wprowadzenie komputera IBM PC, daîo
jakâkolwiek nadziejë dla tego ukîadu. Zarówno procesor, jak i oparty na
nim komputer nie miaîy zbyt wielkich zalet, o powodzeniu zadecydowaî
prestiû dawniejszych konstrukcji IBM. Stâd teû ten prosty "terminal
znakowy" ma dzisiaj tak duûe powodzenie. Szkoda tylko, ûe z chwilâ
wprowadzenia na rynek komputera PC firma IBM, aû do dzisiaj notuje
straty...
Procesor I 8086 nie jest stosowany w zbyt wielu komputerach
niekompatybilnych z narzuceniami IBM.
Firma Motorola wprowadziîa ukîad MC 68000 z myôlâ o nowoczesnych
zastosowaniach, stawiajâc nacisk na efektywnoôê kompilatorów i
rozszerzalnoôê. Z góry zakîadano pracë pod kontrolâ systemów
wielozadaniowych oraz opanowanie rynku kontrolerów. Wszystkie zaîoûenia
Motoroli speîniîy sië znakomicie.
Ukîad MC 68000 zdominowaî rynek wydajnych stacji graficznych oraz
standardy przemysîowe. Korzystajâ z niego stacje robocze SUN, HP,
komputery Amiga i Mac oraz wiëkszoôê sterowników poczâwszy od drukarek
laserowych, modemów i sprzëtu pomiarowego, na urzâdzeniach militarnych
skoïczywszy. W tej klasie nie liczâ sië sentymenty przestarzaîego
oprogramowania lub opracowaï sprzëtowych, liczy sië jakoôê.